package com.mzz.structure.flyweight;

/**
 *
 * @author xushijian
 * @date 18/6/6 下午3:11
 */
public class StringTest {

    public static void main(String[] args) {

        String str1 = "abcd";
        String str2 = "abcd";
        String str3 = "ab" + "cd";
        String str4 = "ab";

        System.out.println(str1 == str2);

        System.out.println(str1 == str3);

        System.out.println(str2 == str4);


        /**
         *
         * true
         * true
         * false
         *
         * "abcd"字符串在内存中实现了内存的共享，不会重新分配内存空间。
         *
         * str1、str2的引用存在栈区内
         *
         * str1、str2的对象存在堆内
         *
         *
         *
         * +
         *  "Copy On Write"原则
         *
         *      Java String类这种在修改享元对象时，先将原有的对象复制一份，然后在新对象上再实施修改操作的机制。
         *
         *
         *
         */


    }
}
